/****************************************************************************
 * Copyright (c) 2024 Qualcomm Technologies International, Ltd.
 ***************************************************************************/

/**
 * \defgroup   basic_passthrough
 * \file       basic_passthrough_thread_private.h
 * \ingroup    capabilities
 *
 * Basic passthrough operator private header file. <br>
 *
 */

#ifndef _BASIC_PASSTHROUGH_THREAD_PRIVATE_H_
#define _BASIC_PASSTHROUGH_THREAD_PRIVATE_H_

#ifdef INSTALL_SUB_TASK_API

/**
 * \brief Initialize the variables associated to sub tasks from basic pass through.
 *
 * \param[in/out]      opx_data          Operator instance data.
 */
extern void init_pass_through_threads_(BASIC_PASSTHROUGH_OP_DATA *opx_data);

/**
 * \brief Delete the created tasks.
 *
 * \param[in/out]      opx_data          Operator instance data.
 */
extern void destroy_pass_through_threads_(BASIC_PASSTHROUGH_OP_DATA *opx_data);

/**
 * \brief This function creates the sub-tasks from basic pass through by calling create_task.
 *        Currently three sub-tasks of different priority and a timer task are created.
 *
 * \param[in/out]      opx_data          Operator instance data.
 */
extern void create_pass_through_threads_(BASIC_PASSTHROUGH_OP_DATA *opx_data);

/**
 * \brief This function calls put_message and bg_int which calls the msg handler
 *        and background interrupt routine.
 *
 * \param[in/out]      opx_data          Operator instance data.
 */
extern void process_pass_through_threads_(BASIC_PASSTHROUGH_OP_DATA *opx_data);

/**
 * \brief This function  fetches the time of delivery stats and prints the same.
 *
 * \param[in]      enable          1 to enable prints else 0.
 */
extern void print_render_info_(bool enable);

#define init_pass_through_threads(a)       init_pass_through_threads_(a) 
#define destroy_pass_through_threads(a)    destroy_pass_through_threads_(a)
#define create_pass_through_threads(a)     create_pass_through_threads_(a) 
#define process_pass_through_threads(a)    process_pass_through_threads_(a)
#define print_render_info(a)               print_render_info_(a)

#endif

#endif